在資料處理的世界裡,CSV(Comma-Separated Values,逗號分隔值)是最普遍的格式之一。
無論是Excel匯出的檔案,還是各種數據集,CSV幾乎隨處可見。
Python內建csv模組,讓我們能夠輕鬆讀寫CSV檔案,今天就來學習它的操作方式。
1.什麼是CSV?
CSV檔案本質上是純文字檔,透過逗號或其他分隔符號來區分欄位。
範例(students.csv):
name,age,grade
Alice,20,A
Bob,22,B
Charlie,19,A
2.讀取CSV檔案
方法一:使用csv.reader
import csv
with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
輸出:
['name', 'age', 'grade']
['Alice', '20', 'A']
['Bob', '22', 'B']
['Charlie', '19', 'A']
方法二:使用csv.DictReader
會自動把每一列轉換成字典,方便處理:
import csv
with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["name"], row["grade"])
輸出:
Alice A
Bob B
Charlie A
3.寫入CSV檔案
方法一:csv.writer
import csv
with open("new_students.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["name", "age", "grade"])
writer.writerow(["David", 21, "B"])
writer.writerow(["Eva", 23, "A"])
方法二:csv.DictWriter
import csv
students = [
{"name": "Frank", "age": 20, "grade": "C"},
{"name": "Grace", "age": 22, "grade": "B"}
]
with open("dict_students.csv", "w", newline="", encoding="utf-8") as f:
fieldnames = ["name", "age", "grade"]
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader() # 寫入欄位名稱
writer.writerows(students)
4.自訂分隔符號
不是所有CSV都用逗號,有些會用;或\t(Tab):
import csv
with open("students_semicolon.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f, delimiter=";")
for row in reader:
print(row)
5.搭配pandas操作CSV
如果你要處理大量資料,推薦用pandas,更高效也更直覺:
import pandas as pd
#讀取CSV
df = pd.read_csv("students.csv")
print(df)
#寫入CSV
df.to_csv("output.csv", index=False)
6.CSV在實務中的應用
數據分析,大量數據集都是CSV格式。
系統匯入/匯出,系統間交換資料的常見方式。
快速資料儲存,比JSON更適合表格型資料。
今天我們學會了Python中的CSV檔案讀寫,包括csv.reader、csv.DictReader、csv.writer、csv.DictWriter,甚至介紹了pandas的進階操作。掌握這些技能後,你就能快速處理各種表格型資料。